package com.fdb.efp.nls.service.facade;

import com.fdb.basic.framework.core.bean.SedSynCusManageVO;
import com.fdb.efp.nls.service.vo.CtrLoanContVO;

import java.util.List;


/**
 * <p>Description:贷款合同表             <p>
 * @author chenqm1
 * @date 2018-05-04
 */
public interface CtrLoanContService {
    
    public List<CtrLoanContVO> queryAllOwner(CtrLoanContVO ctrLoanContVo);
    
    public List<CtrLoanContVO> queryAllCurrOrg(CtrLoanContVO ctrLoanContVo);
    
    public List<CtrLoanContVO> queryAllCurrDownOrg(CtrLoanContVO ctrLoanContVo);

	public List<CtrLoanContVO> queryAllCurrOwnerPrd(CtrLoanContVO ctrLoanContVo);

    public int insertCtrLoanCont(CtrLoanContVO vo);
    
    public int deleteByPk(CtrLoanContVO ctrLoanContVo);
    
    public int updateByPk(CtrLoanContVO ctrLoanContVo);
    
    public int updateByContNo(String contNo, String loanAccount);

    public CtrLoanContVO queryByPk(CtrLoanContVO ctrLoanContVo);

    public CtrLoanContVO queryByCondition(CtrLoanContVO ctrLoanContVo);

    public List<CtrLoanContVO> queryListByCondition(CtrLoanContVO ctrLoanContVo) throws Exception;

    public List<CtrLoanContVO> queryFrozenListByCondition(CtrLoanContVO ctrLoanContVo);

    public List<CtrLoanContVO> queryListBySemiClose(CtrLoanContVO ctrLoanContVo);

    /**
     * 签订借款合同
     * @return
     * @throws Exception
     */
    public boolean signCtrLoanCont(String contNo) throws Exception;

    /**
     * 更新贷款账号
     * @param contNo
     * @param loanAccount
     * @return
     * @throws Exception
     */
    public boolean updateLoanAccount(String contNo, String loanAccount) throws Exception;

    /**
     * 通过合同号列表查询合同列表
     * @param contNos
     * @return
     */
    public List<CtrLoanContVO> queryCtrLoanContListByContNos(List<String> contNos);
    /**
     * 通过授信协议编号,查询客户证件号码列表
     * @param lmtContNo
     * @return
     */
    public List<String> queryContNoByLmtContNo(String lmtContNo);

    /**
     * 条件分页查询
     * @param ctrLoanContVO
     * @return
     */
    public List<CtrLoanContVO> queryByConditionByPage(CtrLoanContVO ctrLoanContVO);

    /**
     * 根据合同号更新合同状态
     * @param contNos
     * @return
     */
    public int updateContStatusByContNos(List<String> contNos, String contStatus);

	 //查询用户权限数据 ——专项检查
	public List<CtrLoanContVO> queryByOwner(CtrLoanContVO ctrLoanContVO);
	//查询当前机构权限数据——专项检查
	public List<CtrLoanContVO> queryByCurrOrg(CtrLoanContVO ctrLoanContVO);
	//查询当前机构及下属机构权限数据——专项检查
	public List<CtrLoanContVO> queryByCurrDownOrg(CtrLoanContVO ctrLoanContVO);

	/**
	 * 获取第一条记录
	 * @param ctrLoanContVO
	 * @return
	 */
	public CtrLoanContVO queryFirstCtrLoanCont(CtrLoanContVO ctrLoanContVO);
	//查询税务信息的贷款客户信息明细
	public List<CtrLoanContVO> queryCusListBySydInfo();

	/**
	 * 获取已签订合同数量
	 * @param serno
	 * @return
	 * @throws Exception
	 */
	public int getContSignedCountBySerno(String serno) throws Exception;

	public List<CtrLoanContVO> querySydListByCertcode(CtrLoanContVO ctrLoanContVO);

	//20190121 wanglh
	public CtrLoanContVO queryContNo(CtrLoanContVO ctrLoanContVO);

	/**
	  * 通过客户编号分页查询借款合同信息
	  * @param ctrLoanContVO
	  * @return
	  * @author qiuyf
	  * @since 2019年2月20日 下午4:00:33
	  * @version 1.0
	 */
	public List<CtrLoanContVO> queryAllByCusId(CtrLoanContVO ctrLoanContVO);

	 /**
	 *
	 * 用信申请文件信息临时表数据修改合同信息表有数据则更新，无则新增 <br>
	 * 0.1:weijj:2019年5月7日 下午2:37:18:新增 <br>
	 *
	 * @author weijj
	 * @since 2019年5月7日 下午2:37:18
	 * @date 2019年5月7日 下午2:37:18
	 * @version 0.1
	 */
	public int insertOrUpdateCtrLoanCont(List<CtrLoanContVO> list);

	public int batchUpdate(List<CtrLoanContVO> list);

	/**
	 * 开发人员：【chenxuan】
	 * 创建/修改日期：【2019/6/4】
	 * 修改描述：批量变更客户经理
	 * @Param [SedSynCusManageVOList]
	 * @return int
	 **/
//	@author:liuty
//	@date:2019/10/17
//	涉及产品:税e贷
//	功能:批量变更客户经理
//	原因:增量投产只投了接口没投实现，因此注释，不影响当前产品实际业务
//	public boolean batchUpdateCusManage(List<SedSynCusManageVO> SedSynCusManageVOList);

	/**
	 * 需求编号：【2019D0519】（业务提的需求编号）
	 * 问题编号：【xxxxxxx】（若不是因为修复问题而新增该类，则留空）
	 * 开发人员：qiuyf
	 * 创建日期：2019年4月30日 下午6:12:04
	 * 功能描述：通过业务流水号、合同类型查询合同编号
	 */
	public CtrLoanContVO qryBySernoAndContTyp(CtrLoanContVO ctrLoanContVO);

	/**
	 *
	 * 插入两条合同数据<br>
	 * 0.2:wanglihua:2019年5月5日 下午4:32:02:TODO <br>
	 * @author wanglihua
	 * @since 2019年5月5日 下午4:32:02
	 * @date 2019年5月5日 下午4:32:02
	 * @version 0.1
	 */
	public int insertCtrLoanContList(List<CtrLoanContVO> ctrLoanContVOs);

	/**
	 *
	 * 签章明细登记信息查询<br>
	 * @author wanglihua
	 * @since 2019年5月7日 上午9:32:32
	 * @date 2019年5月7日 上午9:32:32
	 * @version 0.1
	 */
	public CtrLoanContVO queryInfosByPk(CtrLoanContVO ctrLoanContVO);

	/**
	 *
	 * 查询合同号做条件进行签章明细登记信息查询<br>
	 * @author wanglihua
	 * @since 2019年5月7日 上午9:32:32
	 * @date 2019年5月7日 上午9:32:32
	 * @version 0.1
	 */
	public List<CtrLoanContVO> queryContNo4Condition(CtrLoanContVO ctrLoanContVO);

	/**
	 *
	 * 授信合同查询<br>
	 * @author wanglihua
	 * @since 2019年5月7日 下午3:38:31
	 * @date 2019年5月7日 下午3:38:31
	 * @version 0.1
	 */
	public List<CtrLoanContVO> queryCreditContByPage(CtrLoanContVO ctrLoanContVO);

	/**
	 * 根据产品查询符合条件的所有增量数据
	 * @param batchDate
	 * @return
	 */
	public List<CtrLoanContVO> queryIncrementalData(String batchDate);

	/**
	 * 开发人员：【chenxuan】
	 * 创建/修改日期：【2019/6/4】
	 * 修改描述：批量变更客户经理
	 * @Param [SedSynCusManageVOList]
	 * @return int
	 **/
	public boolean batchUpdateCusManage(List<SedSynCusManageVO> SedSynCusManageVOList);

	/**
	 *
	 * 根据用信申请流水号查询一条合同数据
	 *
	 * @author wanglihua
	 * @params  * @param null
	 * @return
	 * @since 2019/11/14 10:00
	 * @date 2019/11/14 10:00
	 * @version 0.1
	 */
	public CtrLoanContVO queryOneCtrData(String serno);


	/**
	 * 根据授信申请流水号和合同类型查询合同签订记录
	 * @param lmtContNo
	 * @param contType
	 * @return
	 */
	CtrLoanContVO queryContNoByLmtContNoAndContype(String lmtContNo, String contType);

	/**
	 * 根据授信协议号更新授信合同状态
	 *
	 * @author xieziwei
	 * @params  * @param null
	 * @return
	 * @since 2020/10/13 18:27
	 * @date 2020/10/13 18:27
	 * @version 0.1
	 */
	public int updateStateByLmtContNo(CtrLoanContVO ctrLoanContVO);
}
